﻿#include "widget.h"
#include "ui_widget.h"

#include <QStandardItemModel>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    //提供了用于存储自定义数据的通用模型
    QStandardItemModel *model = new QStandardItemModel(7,2);//13.2
    model->setHeaderData(0,Qt::Horizontal,tr("paramName"));//"参数名"
    model->setHeaderData(1,Qt::Horizontal,tr("paramValue")); //"参数值"


    QStringList dataName;
    //dataName << tr("系统工作状态")<< tr("通讯站号")<< tr("通讯波特率")<<tr("烟感状态1")<<"烟感状态2"<<"水浸状态1"<<"水浸状态2"<<"前门状态"<<"后门状态"<<"人体感应状态1"<<"人体感应状态2"<<"输入9状态"<<"输入10状态";
    dataName << tr("sys_status") << tr("stationNo") << tr("baudrate") << tr("gas_sener_status1") << tr("gas_sener_status2") << tr("water_staus1") << tr("water_status2") ;
    QStringList Value;
    Value    <<"0"
             <<"0"
             <<"115200"
             <<"1"
             <<"1"
             <<"1"
             <<"0";
           /*  <<"1"
             <<"1"
             <<"1"
             <<"1"
             <<"0"
             <<"0";*/

    //循环插入数据
    for(int row=0;row<7;row++)
    {
        model->insertRows(row,1); //插入一行
        model->setData(model->index(row,0), dataName.at(row)); //插入第一列 插入一个1000-2000的随机数
        model->setData(model->index(row,1), Value.at(row));

        //设置为居中
        model->item(row,0)->setTextAlignment(Qt::AlignCenter);
        model->item(row,1)->setTextAlignment(Qt::AlignCenter);
    }

    ui->tableView->horizontalHeader()->setVisible(true);//显示或隐藏表头
    ui->tableView->verticalHeader()->setVisible(false);//显示或隐藏序列行

    ui->tableView->setAutoScroll(true);//自动滚动条
    //ui->tableView->resizeColumnsToContents(); //根据内容调整大小
    ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);//根据容器调整大小
    ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);//只读
    ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows); //设置选中模式为选中行
    ui->tableView->setSelectionMode( QAbstractItemView::SingleSelection); //设置选中单行
    ui->tableView->setModel(model); //使用


}

Widget::~Widget()
{
    delete ui;
}

#if 0
tableview
在Qt中，TableView是一个用于显示和编辑表格数据的控件。它可以呈现数据模型中的数据，并允许用户对表格数据进行编辑和操作。

使用一个数据模型来存储和管理表格数据。常用的数据模型是QAbstractItemModel的子类，比如QStandardItemModel、QSqlTableModel等。这些数据模型提供了一种将数据组织成表格形式的方式，并且可以在TableView中显示和编辑。

可以显示多列和多行的数据，并且可以根据需要自动调整列宽和行高。它还支持对表头进行排序和筛选，以及拖放操作来重新排列表格中的数据。

支持多种选择模式，包括单选、多选和扩展选择等。用户可以使用鼠标或键盘来选择和操作表格中的数据。

除了显示数据，TableView还提供了一些交互功能，比如上下文菜单、右键菜单、双击编辑等。开发者可以通过自定义委托和编辑器来定制这些交互行为。

总之，TableView是Qt中用于显示和编辑表格数据的强大控件，它提供了丰富的功能和灵活的定制选项，可以满足各种表格数据展示和编辑的需求。
#endif
